"""
    调用方法时先在子类中查找，若不存在则从左到右依次查找父类中是否包含方法。
    多继承时，子类对象可以同时使用多个父类中的方法和属性。
    Stuent 类同时继承了 Person 和 Ability 两个父类。
    可使用 类名.__mro__ 访问类的继承链来查看方法解析顺序。
"""

class Person:
    def __init__(self, name:str):
        self.name = name

    def show_info(self):
        print("我的名字是 %s" % self.name)

class Ability:
    def play_game(self):
        print("我会打游戏")
    

class Student(Person, Ability):
    def __init__(self, name:str, age:int):
        super().__init__(name)
        self.age = age


zhangsan = Student("张三", 20)
zhangsan.show_info()
zhangsan.play_game()
print(isinstance(zhangsan, Student), isinstance(zhangsan, Person), isinstance(zhangsan, Ability))
print(Student.__mro__)  # 查看类的继承链

